import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// 导入全局样式表
import './assets/css/global.css'
// 导入axios
import axios from 'axios'
// 引入echarts
import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts
// 配置请求的根路径 相当于后端的项目根路径  那么在请求后端接口的时候写对应控制器的路径就能发起请求
axios.defaults.baseURL = 'http://localhost:8081/springboot'
// 配置请求拦截器，为请求头对象添加 token 验证的 Authorization字段
axios.interceptors.request.use(config => {
  console.log(config)
  // 因为我后端是直接在头部添加token字段，好像登录和注册的时携带token=null后台会报错
  // 经后台debug发现，登录的时候前端传过去的headers 中 token:"null" 并不是真正意义上的null所以后台解析token报错
  // 因此当sessionStorage里面没有token的时候,就不要给头部加字段
  // 其实直接加在headers里面不规范，而且token要有前缀（很多人都加了 Bearer ） 之后会完善
  if (window.sessionStorage.getItem('token') != null) {
    config.headers.token = window.sessionStorage.getItem('token')
  }
  return config
})
// 把这个包挂载再vue的原型对象上
Vue.prototype.$http = axios

// 这个好像要放在main.js才会生效，整合到 router/index.js 里面就不生效了
router.beforeEach((to, from, next) => {
  /* 路由发生变化修改页面title */
  if (to.meta.title) {
    document.title = to.meta.title
  }
  next()
})

Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
